//引入express模块
const express = require("express");
//引入数据库连接模块
const pool = require("../pool.js");
//创建路由器对象
const r = express.Router();

//添加路由
//1.用户注册接口(post /reg)
//接口地址：http://127.0.0.1:3000/v1/library/reg
//请求方式：post
r.post("/reg", (req, res, next) => {
  //1.1获取post传递的参数
  var obj = req.body;
  //1.2执行SQL命令，将数据插入到数据库
  pool.query("insert into user set?", [obj], (err, r) => {
    if (err) {
      //抛出错误，阻止后边程序的执行，用于调试
      // throw err;
      //交给下一个错误处理中间件，同时把错误信息传递过去
      next(err);
      //阻止往后执行
      return;
    }
    console.log(r);
    //成功以后，代表插入成功，再去响应
    res.send({ code: 200, msg: "注册成功" });
  });
});

//添加路由
//2.删除用户接口(delete /编号)
//接口地址：http://127.0.0.1:3000/v1/library/6
//请求方式：delete
r.delete("/:id", (req, res, next) => {
  //2.1获取路由传递的参数
  var obj = req.params;
  console.log(obj);
  //2.2执行SQL命令，删除编号对应的用户   10:15
  pool.query("delete from user where id=?", [obj.id], (err, r) => {
    if (err) {
      //如果SQL命令中出现错误，则交给下一个错误处理中间件
      next(err);
      //阻止往后执行
      return;
    }
    console.log(r);
    //结果是对象，如果对象下的affectedRows对应的值为0说明删除失败，否则删除成功
    if (r.affectedRows === 0) {
      res.send({ code: 500, msg: "删除失败" });
    } else {
      res.send({ code: 200, msg: "删除成功" });
    }
  });
});

//添加路由
//3.修改用户接口(put /)
//接口地址：http://127.0.0.1:3000/v1/library/
//请求方式：put
r.put("/", (req, res, next) => {
  //3.1获取post传递的参数
  var obj = req.body;
  console.log(obj);
  //3.2执行SQL命令
  //update xz_user set email=?,phone=?,..  where uid=?
  pool.query("update user set? where id=?", [obj, obj.id], (err, r) => {
    console.log(obj.id);
    if (err) {
      next(err);
      return;
    }
    console.log(r);
    //SQL命令执行成功后再去响应
    //修改的结果是对象，如果对象下的affectedRows的值是0说明修改失败，否则成功
    if (r.affectedRows === 0) {
      res.send({ code: 500, msg: "修改失败" });
    } else {
      res.send({ code: 200, msg: "修改成功" });
    }
  });
});

//添加路由
//4.用户登录接口(post  /login)
//接口地址：http://127.0.0.1:3000/v1/library/login
//请求方式：post
r.post("/login", (req, res, next) => {
  //4.1获取post传递的参数
  var obj = req.body;
  console.log(obj);
  //4.2判断是否为空
  if (!obj.name) {
    // obj.uname===''
    res.send({ code: 401, msg: "name不能为空" });
    //阻止往后执行
    return;
  }
  //4.2执行SQL命令，查询数据表中是否有用户名和密码同时匹配的数据
  pool.query(
    "select * from user where name=? and password=?",
    [obj.name, obj.password],
    (err, r) => {
      if (err) {
        //交给下一个错误处理中间件
        next(err);
        //阻止往后执行
        return;
      }
      console.log(r);
      //SQL命令成功后再响应
      //如果结果是空数组说明登录失败，否则成功
      if (r.length === 0) {
        res.send({ code: 500, msg: "登录失败" });
      } else {
        res.send({ code: 200, msg: "登录成功" });
      }
    }
  );
});

//添加路由
//5.book数据查询接口(get  /book)
//接口地址：http://127.0.0.1:3000/v1/library/book/:pno
//请求方式：get
r.get("/book", (req, res, next) => {
  pool.query("select * from book", (err, r) => {
    if (err) {
      //抛出错误,阻止后边程序的执行,用于调试
      // throw err;
      //交给下一个错误处理中间件,同时把错误信息传递过去
      next(err);
      //阻止往后执行
      return;
    }
    //成功之后,代表插入成功,再去响应
    if (r.affectedRows === 0) {
      res.send({ code: 500, msg: "查询失败" });
    } else {
      res.send(r);
    }
  });
});

//添加路由
//6.words数据查询接口(get  /words)
//接口地址：http://127.0.0.1:3000/v1/library/words
//请求方式：get
r.get("/words", (req, res, next) => {
  pool.query("select * from words", (err, r) => {
    if (err) {
      //抛出错误,阻止后边程序的执行,用于调试
      // throw err;
      //交给下一个错误处理中间件,同时把错误信息传递过去
      next(err);
      //阻止往后执行
      return;
    }
    //成功之后,代表插入成功,再去响应
    if (r.affectedRows === 0) {
      res.send({ code: 500, msg: "查询失败" });
    } else {
      res.send(r);
    }
  });
});

//添加路由
//7.words数据查询接口(get  /booklist)
//接口地址：http://127.0.0.1:3000/v1/library/booklist
//请求方式：get
r.get("/booklist", (req, res, next) => {
  pool.query("select * from booklist", (err, r) => {
    if (err) {
      //抛出错误,阻止后边程序的执行,用于调试
      // throw err;
      //交给下一个错误处理中间件,同时把错误信息传递过去
      next(err);
      //阻止往后执行
      return;
    }
    //成功之后,代表插入成功,再去响应
    if (r.affectedRows === 0) {
      res.send({ code: 500, msg: "查询失败" });
    } else {
      res.send(r);
    }
  });
});

//添加路由
//8.bookdetetails数据查询接口(get  /bookdetails/:id)
//接口地址：http://127.0.0.1:3000/v1/library/bookdetails/:id
//请求方式：get
r.get("/bookdetails/:id", (req, res, next) => {
  var obj = req.params;
  pool.query("select * from book where bid=?", [obj.id], (err, r) => {
    if (err) {
      //抛出错误,阻止后边程序的执行,用于调试
      // throw err;
      //交给下一个错误处理中间件,同时把错误信息传递过去
      next(err);
      //阻止往后执行
      return;
    }
    //成功之后,代表插入成功,再去响应
    if (r.affectedRows === 0) {
      res.send({ code: 500, msg: "查询失败" });
    } else {
      res.send(r);
    }
  });
});

//添加路由
//9.猜你喜欢数据查询接口(get  /maybelike)
//接口地址：http://127.0.0.1:3000/v1/library/maybelike
//请求方式：get
r.get("/maybelike", (req, res, next) => {
  pool.query("select * from book", (err, r) => {
    if (err) {
      //抛出错误,阻止后边程序的执行,用于调试
      // throw err;
      //交给下一个错误处理中间件,同时把错误信息传递过去
      next(err);
      //阻止往后执行
      return;
    }
    //成功之后,代表插入成功,再去响应
    if (r.affectedRows === 0) {
      res.send({ code: 500, msg: "查询失败" });
    } else {
      res.send(r);
    }
  });
});

//添加路由
//10.booksdetetails数据查询接口(get  /bookdetails/:lname)
//接口地址：http://127.0.0.1:3000/v1/library/booksdetails/:id
r.get("/booksdetails/:id", (req, res, next) => {
  var obj = req.params;
  pool.query("select * from book where lid=?", [obj.id], (err, r) => {
    if (err) {
      //抛出错误,阻止后边程序的执行,用于调试
      // throw err;
      //交给下一个错误处理中间件,同时把错误信息传递过去
      next(err);
      //阻止往后执行
      return;
    }
    //成功之后,代表插入成功,再去响应
    if (r.affectedRows === 0) {
      res.send({ code: 500, msg: "查询失败" });
    } else {
      res.send(r);
    }
  });
});

//添加路由
//11./wechat数据查询接口(get  /wechat)
//接口地址：http://127.0.0.1:3000/v1/library/wechat
r.get("/wechat", (req, res, next) => {
  pool.query("select * from wechat order by wclid desc", (err, r) => {
    if (err) {
      //抛出错误,阻止后边程序的执行,用于调试
      // throw err;
      //交给下一个错误处理中间件,同时把错误信息传递过去
      next(err);
      //阻止往后执行
      return;
    }
    //成功之后,代表插入成功,再去响应
    if (r.affectedRows === 0) {
      res.send({ code: 500, msg: "查询失败" });
    } else {
      res.send(r);
    }
  });
});

//添加路由
//12.wechatlist数据查询接口(get  /wechatlist/:id)
//接口地址：http://127.0.0.1:3000/v1/library/wechatlist
r.get("/wechatlist/:id", (req, res, next) => {
  var obj = req.params;
  pool.query("select * from wclist where wcid=?", [obj.id], (err, r) => {
    if (err) {
      //抛出错误,阻止后边程序的执行,用于调试
      // throw err;
      //交给下一个错误处理中间件,同时把错误信息传递过去
      next(err);
      //阻止往后执行
      return;
    }
    //成功之后,代表插入成功,再去响应
    if (r.affectedRows === 0) {
      res.send({ code: 500, msg: "查询失败" });
    } else {
      res.send(r);
    }
  });
});

//添加路由
//13.words数据查询接口(get  /words)
//接口地址：http://127.0.0.1:3000/v1/library/words/details/:id
//请求方式：get
r.get("/words/details/:id", (req, res, next) => {
  var obj = req.params;
  pool.query("select * from words where wid=?", [obj.id], (err, r) => {
    if (err) {
      //抛出错误,阻止后边程序的执行,用于调试
      // throw err;
      //交给下一个错误处理中间件,同时把错误信息传递过去
      next(err);
      //阻止往后执行
      return;
    }
    //成功之后,代表插入成功,再去响应
    if (r.affectedRows === 0) {
      res.send({ code: 500, msg: "查询失败" });
    } else {
      res.send(r);
    }
  });
});

//添加路由
//14.bookchat数据查询接口(get  /bookchat)
//接口地址：http://127.0.0.1:3000/v1/library/bookchat
//请求方式：get
r.get("/bookchat/:id", (req, res, next) => {
  var obj = req.params;
  pool.query("select * from bookdetails where bid=?", [obj.id], (err, r) => {
    if (err) {
      //抛出错误,阻止后边程序的执行,用于调试
      // throw err;
      //交给下一个错误处理中间件,同时把错误信息传递过去
      next(err);
      //阻止往后执行
      return;
    }
    //成功之后,代表插入成功,再去响应
    if (r.affectedRows === 0) {
      res.send({ code: 500, msg: "查询失败" });
    } else {
      res.send(r);
    }
  });
});

//添加路由
//15.bookschat数据查询接口(get  /bookschat)
//接口地址：http://127.0.0.1:3000/v1/library/bookschat
//请求方式：get
r.get("/bookschat/:id", (req, res, next) => {
  var obj = req.params;
  pool.query("select * from bkstk where bid=?", [obj.id], (err, r) => {
    if (err) {
      //抛出错误,阻止后边程序的执行,用于调试
      // throw err;
      //交给下一个错误处理中间件,同时把错误信息传递过去
      next(err);
      //阻止往后执行
      return;
    }
    //成功之后,代表插入成功,再去响应
    if (r.affectedRows === 0) {
      res.send({ code: 500, msg: "查询失败" });
    } else {
      res.send(r);
    }
  });
});

//添加路由
//16.wordschat数据查询接口(get  /wordschat)
//接口地址：http://127.0.0.1:3000/v1/library/wordschat
//请求方式：get
r.get("/wordschat/:id", (req, res, next) => {
  var obj = req.params;
  pool.query("select * from wsdtk  where wid=?", [obj.id], (err, r) => {
    if (err) {
      //抛出错误,阻止后边程序的执行,用于调试
      // throw err;
      //交给下一个错误处理中间件,同时把错误信息传递过去
      next(err);
      //阻止往后执行
      return;
    }
    //成功之后,代表插入成功,再去响应
    if (r.affectedRows === 0) {
      res.send({ code: 500, msg: "查询失败" });
    } else {
      res.send(r);
    }
  });
});

//添加路由
//17./wechatlist数据查询接口(get  /wechat)
//接口地址：http://127.0.0.1:3000/v1/library/wechatlist
r.get("/wechatlist", (req, res, next) => {
  pool.query("select * from wclist order by dianzan desc", (err, r) => {
    if (err) {
      //抛出错误,阻止后边程序的执行,用于调试
      // throw err;
      //交给下一个错误处理中间件,同时把错误信息传递过去
      next(err);
      //阻止往后执行
      return;
    }
    //成功之后,代表插入成功,再去响应
    if (r.affectedRows === 0) {
      res.send({ code: 500, msg: "查询失败" });
    } else {
      res.send(r);
    }
  });
});

//添加路由
//18.修改用户接口(put /)
//接口地址：http://127.0.0.1:3000/v1/library/updateguanzhu/:id
//请求方式：put
r.put("/updateguanzhu/:id", (req, res, next) => {
  //3.1获取post传递的参数
  var obj = req.params;
  console.log(obj);
  //3.2执行SQL命令
  //update xz_user set email=?,phone=?,..  where uid=?
  pool.query(
    "update user set guanzhu=guanzhu+1 where id=?",
    [obj.id],
    (err, r) => {
      console.log(obj);
      if (err) {
        next(err);
        return;
      }
      console.log(r);
      //SQL命令执行成功后再去响应
      //修改的结果是对象，如果对象下的affectedRows的值是0说明修改失败，否则成功
      if (r.affectedRows === 0) {
        res.send({ code: 500, msg: "修改失败" });
      } else {
        res.send({ code: 200, msg: "修改成功" });
      }
    }
  );
});

//添加路由
//19.修改用户接口(put /)
//接口地址：http://127.0.0.1:3000/v1/library/updatebookdetails/dianzan
//请求方式：put
r.put("/updatebookdetails/dianzan", (req, res, next) => {
  //3.1获取post传递的参数
  var obj = req.body;
  console.log(obj);
  //3.2执行SQL命令
  //update xz_user set email=?,phone=?,..  where uid=?
  pool.query(
    "update bookdetails set rdianzan=rdianzan+1 where reid=? and bid=?",
    [obj.reid, obj.bid],
    (err, r) => {
      console.log(obj);
      if (err) {
        next(err);
        return;
      }
      console.log(r);
      //SQL命令执行成功后再去响应
      //修改的结果是对象，如果对象下的affectedRows的值是0说明修改失败，否则成功
      if (r.affectedRows === 0) {
        res.send({ code: 500, msg: "修改失败" });
      } else {
        res.send({ code: 200, msg: "修改成功" });
      }
    }
  );
});

//添加路由
//20.修改用户接口(put /)
//接口地址：http://127.0.0.1:3000/v1/library/updateguanzhu
//请求方式：put
r.put("/updateguanzhu", (req, res, next) => {
  //3.1获取post传递的参数
  var obj = req.body;
  console.log(obj);
  //3.2执行SQL命令
  //update xz_user set email=?,phone=?,..  where uid=?
  pool.query(
    "update user set guanzhu=guanzhu+1 where id=?",
    [obj.id],
    (err, r) => {
      console.log(obj);
      if (err) {
        next(err);
        return;
      }
      console.log(r);
      //SQL命令执行成功后再去响应
      //修改的结果是对象，如果对象下的affectedRows的值是0说明修改失败，否则成功
      if (r.affectedRows === 0) {
        res.send({ code: 500, msg: "修改失败" });
      } else {
        res.send({ code: 200, msg: "修改成功" });
      }
    }
  );
});

//添加路由
//21.修改用户接口(put /)
//接口地址：http://127.0.0.1:3000/v1/library//booksdetails/updatechat
//请求方式：put
r.put("/booksdetails/updatechat", (req, res, next) => {
  //3.1获取post传递的参数
  var obj = req.body;
  console.log(obj);
  //3.2执行SQL命令
  //update xz_user set email=?,phone=?,..  where uid=?
  pool.query(
    "update bkstk set rdianzan=rdianzan+1 where reid=? and bid=?",
    [obj.reid, obj.bid],
    (err, r) => {
      console.log(obj);
      if (err) {
        next(err);
        return;
      }
      console.log(r);
      //SQL命令执行成功后再去响应
      //修改的结果是对象，如果对象下的affectedRows的值是0说明修改失败，否则成功
      if (r.affectedRows === 0) {
        res.send({ code: 500, msg: "修改失败" });
      } else {
        res.send({ code: 200, msg: "修改成功" });
      }
    }
  );
});

//添加路由
//22.修改用户接口(put /)
//接口地址：http://127.0.0.1:3000/v1/library/bestwords/updatedianzan
//请求方式：put
r.put("/bestwords/updatedianzan", (req, res, next) => {
  //3.1获取post传递的参数
  var obj = req.body;
  console.log(obj);
  //3.2执行SQL命令
  //update xz_user set email=?,phone=?,..  where uid=?
  pool.query(
    "update words set dianzan=dianzan+1 where id=? and wid=?",
    [obj.id, obj.wid],
    (err, r) => {
      console.log(obj);
      if (err) {
        next(err);
        return;
      }
      console.log(r);
      //SQL命令执行成功后再去响应
      //修改的结果是对象，如果对象下的affectedRows的值是0说明修改失败，否则成功
      if (r.affectedRows === 0) {
        res.send({ code: 500, msg: "修改失败" });
      } else {
        res.send({ code: 200, msg: "修改成功" });
      }
    }
  );
});

//添加路由
//23.修改用户接口(put /)
//接口地址：http://127.0.0.1:3000/v1/library/bestwords/updatechatdianzan
//请求方式：put
r.put("/bestwords/updatechatdianzan", (req, res, next) => {
  //3.1获取post传递的参数
  var obj = req.body;
  console.log(obj);
  //3.2执行SQL命令
  //update xz_user set email=?,phone=?,..  where uid=?
  pool.query(
    "update wsdtk set rdianzan=rdianzan+1 where reid=? and wid=?",
    [obj.reid, obj.wid],
    (err, r) => {
      console.log(obj);
      if (err) {
        next(err);
        return;
      }
      console.log(r);
      //SQL命令执行成功后再去响应
      //修改的结果是对象，如果对象下的affectedRows的值是0说明修改失败，否则成功
      if (r.affectedRows === 0) {
        res.send({ code: 500, msg: "修改失败" });
      } else {
        res.send({ code: 200, msg: "修改成功" });
      }
    }
  );
});

//添加路由
//24.修改chatdetails话题点赞(put /)
//接口地址：http://127.0.0.1:3000/v1/library/chatdetails/updatezhutidianzan
//请求方式：put
r.put("/chatdetails/updatezhutidianzan", (req, res, next) => {
  //3.1获取post传递的参数
  var obj = req.body;
  console.log(obj);
  //3.2执行SQL命令
  //update xz_user set email=?,phone=?,..  where uid=?
  pool.query(
    "update wclist set dianzan=dianzan+1 where id=? and wcid=?",
    [obj.id, obj.wcid],
    (err, r) => {
      console.log(obj);
      if (err) {
        next(err);
        return;
      }
      console.log(r);
      //SQL命令执行成功后再去响应
      //修改的结果是对象，如果对象下的affectedRows的值是0说明修改失败，否则成功
      if (r.affectedRows === 0) {
        res.send({ code: 500, msg: "修改失败" });
      } else {
        res.send({ code: 200, msg: "修改成功" });
      }
    }
  );
});

//添加路由
//25.修改chatdetails话题点赞(put /)
//接口地址：http://127.0.0.1:3000/v1/library/chatdetails/updatezhutidianzan
//请求方式：put
r.put("/chatdetails/updatepinglundianzan", (req, res, next) => {
  //3.1获取post传递的参数
  var obj = req.body;
  console.log(obj);
  //3.2执行SQL命令
  //update xz_user set email=?,phone=?,..  where uid=?
  pool.query(
    "update wclist set rdianzan=rdianzan+1 where reid=? and wcid=?",
    [obj.reid, obj.wcid],
    (err, r) => {
      console.log(obj);
      if (err) {
        next(err);
        return;
      }
      console.log(r);
      //SQL命令执行成功后再去响应
      //修改的结果是对象，如果对象下的affectedRows的值是0说明修改失败，否则成功
      if (r.affectedRows === 0) {
        res.send({ code: 500, msg: "修改失败" });
      } else {
        res.send({ code: 200, msg: "修改成功" });
      }
    }
  );
});

//添加路由
//26.获取bid(get /bookdetails/getbid)
//接口地址：http://127.0.0.1:3000/v1/library/bookdetails/getbid
//请求方式：get
r.get("/book/getbid", (req, res, next) => {
  pool.query("select * from book order by bid desc limit 1", (err, r) => {
    if (err) {
      //抛出错误,阻止后边程序的执行,用于调试
      // throw err;
      //交给下一个错误处理中间件,同时把错误信息传递过去
      next(err);
      //阻止往后执行
      return;
    }
    //成功之后,代表插入成功,再去响应
    if (r.affectedRows === 0) {
      res.send({ code: 500, msg: "查询失败" });
    } else {
      res.send(r);
    }
  });
});

//添加路由
//27.获取id(get /book/getbid)
//接口地址：http://127.0.0.1:3000/v1/library/book/getid
//请求方式：get
r.get("/book/getid", (req, res, next) => {
  var obj = req.body;
  pool.query("select * from user where id=?", [Number(obj.id)], (err, r) => {
    if (err) {
      //抛出错误,阻止后边程序的执行,用于调试
      // throw err;
      //交给下一个错误处理中间件,同时把错误信息传递过去
      next(err);
      //阻止往后执行
      return;
    }
    //成功之后,代表插入成功,再去响应
    if (r.affectedRows === 0) {
      res.send({ code: 500, msg: "查询失败" });
    } else {
      res.send(r);
    }
  });
});

//暴露出去
module.exports = r;
